/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权: Frank
 * 系统版本: 1.0.0
 * 开发人员: Frank
 * 开发时间: 2019/12/20 14:27
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.spring.arch.uaa.dto;

import com.spring.arch.common.security.UserPrincipal;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;

/**
 * 用户DTO
 *
 * @author Frank
 * @version 1.0.0.1
 * @since 2019/12/20 14:27
 */
@Accessors(chain = true)
@NoArgsConstructor
@Setter
@Getter
public class UserDTO implements Serializable {

    private static final long serialVersionUID = -3860933574916817876L;

    @ApiModelProperty(value = "客户端id")
    private UUID clientId;

    @ApiModelProperty(value = "用户凭证信息")
    private UserPrincipal userPrincipal;

    @ApiModelProperty("当前所在租户信息")
    private TenantDTO tenant;

    @ApiModelProperty("当前所在项目信息")
    private ProjectDTO project;

    @ApiModelProperty("客户端根组织")
    private OrganizationDTO rootOrganization;

    @ApiModelProperty(value = "人员信息")
    private Set<EmployeeDTO> employees = new HashSet<>();

    @ApiModelProperty(value = "资源权限集合")
    private Set<AuthorityDTO> authorities = new HashSet<>();

    @ApiModelProperty(value = "角色信息")
    private Set<RoleDTO> roles = new HashSet<>();

    @ApiModelProperty(value = "组织信息")
    private Set<OrganizationDTO> organizations = new HashSet<>();
}
